SSHとは、ネットワークを介して別のコンピュータにログインしたり、遠隔地のマシンでコマンドを実行したり、他のマシンへファイルを移動したりするためのプログラム。SSHではネットワーク上を流れるデータは暗号化されるため、インターネット経由でも一連の操作を安全に行うことができます。
OpenSSH を使ってセキュアな通信を構築していきます。
Version | openssl-0.9.7c |
Homepage | http://www.openssl.org/ |
Download | http://www.openssl.org/source |
Install | openssl-0.9.7c.tar.gz |
※追記 2005/8/8:openssl-0.9.7d.tar.gzでも動作確認済み。0.9.8の場合だとopenssh
でエラーが発生した。
まず、本家OpenSSLよりをソースパッケージをダウンロードしてきてください。ここでは、openssl-0.9.7c.tar.gzをダウンロードして解説を進めていきます。
OpenSSLはデフォルトでは、/usr/local/ssl にインストールされます。デフォルトのインストール先を変更する場合は、--openssldir
で指定します。ここでは、オプションを指定せずにインストールを行います。
$ cd /usr/local/src $ tar xzvf openssl-0.9.7c.tar.gz $ cd openssl-0.9.7c.tar.gz $ ./config $ make $ make test $ su # make install |
Version | openssh-3.7.1p2 |
Homepage | http://www.openssh.com/ja/ |
Download | ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/ |
Install | openssh-3.7.1p2.tar.gz RH9:zlib-1.1.4-8.i386.rpm RH9:pam-0.75-48.i386.rpm (任意) RH9:tcp_wrappers-7.6-34.i386.rpm (任意) |
※追記 2005/8/8:openssh-4.0p1.tar.gzでも動作確認済み(組:openssl-0.9.7d.tar.gz)
OpenSSH を使用するには、OpenSSL と zlib が必要となります。zlib には、Red
Hat9に付属のものを使うことにします。インストールされていなければ、インストールしておいてください。また、OpenSSH
を ソースパッケージからインストールする方は、予めRPMパッケージをアンインストールしておきます。
# rpm -q zlib pam
tcp_wrappers openssh openssh-server openssh-clients zlib-1.1.4-8 pam-0.75-48 tcp_wrappers-7.6-34 openssh-3.5p1-6 openssh-server-3.5p1-6 openssh-clients-3.5p1-6 |
# rpm -e openssh openssh-server openssh-clients |
Privilege separationがデフォルトで有効になっているため、専用のsshd ユーザーの作成が必要となります。sshd
は、その他のデーモンプロセスによって使われるべきではないので、ログインできないようにnologin とし、shell
も無効に設定します。また、/var/empty の中身は空っぽの状態にしておき、privsepが有効且つ、プリログイン時には、sshd
は /var/tempty にchroot されます。詳しくは、/[src]/ README.privsep
を参照してください。
# mkdir /var/empty # chown root:sys /var/empty # chmod 755 /var/empty # groupadd sshd # useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd |
configure オプションには、TcpWrappers との連携を行いたい場合は --with-tcp-wrappers
、PAM 認証を行うのであれば --with-pam が必要となります。また、--with-ssl-dir=/usr/local/ssl
でOpenSSLのパスを指定しておきます。
$ cd /usr/local/src $ tar xzvf openssh-3.7.1p2.tar.gz $ cd openssh-3.7.1p2 $ ./configure --with-ssl-dir=/usr/local/ssl --with-pam --with-md5-passwords $ make $ su # make install |
OpenSSH はデフォルトで、root でのログインが可能な設定にされているので禁止させておきます。
PermitRootLogin no |
また、パスワードが設定されていないユーザーのログインを禁止します。デフォルトで有効になっていますので確認してください。コメントがついている場合は、デフォルト値が設定されています。
PermitEmptyPasswords no |
PAM 認証を有効にするには、/usr/local/src/openssh-3.7.1p2/contrib
配下にあるサンプルファイル、sshd.pam.generic を /etc/pam.d にコピ&リネームーします。
# cd /usr/local/src/openssh-3.7.1p2/contrib/ # cp sshd.pam.generic /etc/pam.d/sshd |
次に、/etc/pam/sshd を編集しておきます。pam_unix.so の箇所をpam_pwdb.so
に変更します。
#vi /etc/pam.d/sshd |
#%PAM-1.0 auth required /lib/security/pam_pwdb.so shadow nodelay auth required /lib/security/pam_nologin.so account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow nullok use_authtok session required /lib/security/pam_pwdb.so session required /lib/security/pam_limits.so |
# /usr/local/sbin/sshd |
SSH のプロセスを確認後、ポートスキャンして22番ポートが開いているかどうか確認してください。
$ ps aux | grep sshd root 25828 0.0 0.4 2552 1088 ? S 13:41 0:00 /usr/local/sbin/sshd $ nmap localhost Starting nmap V. 3.00 ( www.insecure.org/nmap/ ) Interesting ports on ns1.click-rescue.com (127.0.0.1): (The 1589 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 23/tcp open telnet 53/tcp open domain 110/tcp open pop-3 139/tcp open netbios-ssn 901/tcp open samba-swat 953/tcp open rndc 3128/tcp open squid-http 5432/tcp open postgres 8080/tcp open http-proxy |
Red Hat 用の起動スクリプトがデフォルトで用意されているので、これを./etc/r.cd/init.d
以下にコピーしておきます。なお、私の環境では、起動プログラムのパスが、/usr/local/sbin/sshd
のため、SSHD=/usr/local/sbin/sshd に編集しなおしています(デフォルトは、SSHD=/usr/sbin/sshd)。
# cd /usr/local/src/openssh-3.7.1p2 # cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd # chkconfig --add sshd # chkconfig --list sshd |
認証を強固にするため、OpenSSH では公開鍵とパスフレーズによる認証を行うことが出来るようになっています。SSH2
プロトコルでは、RSA と DSA のどちらかの認証方式を利用することができます。ここでは、TeraTermを使用することを前提として、rsa1
で暗号鍵の作成を行ってみます(TeraTermではrsa1のみに対応しています)。RSA暗号鍵はユーザーごとに作成する必要があり、ユーザーのホームディレクトリの.ssh/
以下に identityとして作成されます(秘密鍵)。公開鍵は、indentity.pub。まず、一般ユーザーとしてログインしてください。途中、パスフレーズの入力を求められますが、パスフレーズにはパスワードとは違い、空白を挿入することができます。スペースを混在させることでよりセキュアなパスフレーズを作成することができます。他の暗号鍵作成コマンドはこちらを参照。
$ ssh-keygen -t rsa1 Generating public/private rsa1 key pair. Enter file in which to save the key (/home/sakura/.ssh/identity):[ ENTER ] Enter passphrase (empty for no passphrase): //パスフレーズを入力 Enter same passphrase again: Your identification has been saved in /home/sakura/.ssh/identity. Your public key has been saved in /home/sakura/.ssh/identity.pub. The key fingerprint is: 2a:c0:b8:c5:c4:15:ed:88:0a:74:b2:6f:a7:c3:7b:cb sakura@serv.click-rescue.com |
クライアントからRSAキーでログインする際にはアカウントの公開鍵が authorized_keys
ファイルに登録されている必要があるため、以下のようにしてコピーして新規にauthorized_keysを作成しておきます。cp
の -p オプションは、タイムスタンプやパーミッションの属性などをそのままコピーします。
$ cd .ssh $ cp -p identity.pub authorized_keys |
なお、既にauthorized_keys が作成されている場合、以下のようにして追加します。
$ cd .ssh $ cat identity.pub >> authorized_keys |
次に、秘密鍵ファイルである、.ssh/identity をWindows 上にTeraTerm のディレクトリの中にコピーしておきます。但し、これでは誰でも秘密鍵を盗める状態になってしまうので、2000/XP
を使用しているならば、自分のDocuments and Settings 等に置いておきましょう。
次に平文パスワードを無効にし、RSA認証を有効にするために、sshd_config の以下の行を編集します。
# vi /usr/local/etc/sshd_config |
PasswordAuthentication no RSAAuthentication yes |
TeraTerm を起動し、「設定」→「SSH認証」を選択します。
「RSA暗号鍵を使う」にチェックを入れ、先ほどコピーした identity のファイルを指定します。ユーザー名を入力し、OKをクリックします。
「設定」→「設定の保存」でTERATERM.INI に上書き保存します。
以上の設定を終えたら。「ファイル」→「新規接続」を選択します。
初めてのログインであれば以下のメッセージが表示されますが、「このホストを known hosts リストに追加する」にチェックを入れ、「続行」をクリックすると次回からは表示されなくなります。
SSH認証の画面が現れたら、ssh-keygen実行時に作成したパスフレーズを入力します。「RSA鍵を使う」のチェックは先ほど設定をしたため、既にidentity
が選択された状態になっていると思います。OKをクリックして正常にログインできれば成功です。
上記で正常にログインできることを確認したら、次に本当にRSAでログインできたかどうか確認しておきましょう。以下のように、Accepted
rsa と表示されていれば正常にRSAを使ってログインできたことが確認できます。外に出かけた時などに、外部から自宅のサーバーにアクセスする際には秘密鍵が必要となるので常に持ち歩くようにしましょう∑(; ̄□ ̄
# tail /var/log/messages Jan 6 16:05:15 ns1 sshd[26545]: Accepted rsa for sakura from 172.16.50.4 port 2706 |
$ ssh-keygen -t rsa1 Generating public/private rsa1 key pair. Enter file in which to save the key (/home/sakura/.ssh/identity): |
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/sakura/.ssh/id_rsa): |
$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/sakura/.ssh/id_dsa): |
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[2.11:ファイル共有サービス] | |
[2.12:システムのセキュリティ] | |
[2.12.1 iptables や firewalld によるパケットフィルタリング] | |
[2.12.2 OpenSSH サーバーの設定と管理] | |
[2.12.3 OpenVPNの設定と管理] | |
[2.12.4 セキュリティ業務] | |
[2.13:システムアーキテクチャ] | |
[講義検索] | |
[リンク集] |